1. Field of the Invention
The invention pertains to the field of video transmissions. More particularly, the invention pertains to a system and a method for generating video frames.
2. Description of the Related Art
Virtually all applications of video and visual communication deal with large quantities of video data. To create a video presentation, a rendering computer displays a plurality of digital images (“frames”) in succession, thereby simulating movement.
Currently, certain technical problems exist relating to transmitting and rendering a video presentation across low bandwidth computer networks. FIG. 1 illustrates a conventional streaming video system 100. In the video system 100, a media server 102 is connected via a network 104 to a rendering computer 106. The media server 102 typically includes one or more video presentations 110 for transmission to the rendering computer 106.
One problem that is encountered in current streaming systems is that the transmission bandwidth between the media server 102 and the rendering computer 106 is not sufficient to support a real-time seamless presentation, such as is provided by a standard television set. To overcome this problem and allow the user to receive the presentation in real-time, the video presentation is often spatially and temporally compressed. Further, to reduce the amount of data that is transmitted, the media server 102 skips selected frames of the presentation, or, alternatively, the video presentation can be developed having only a few frames per second. The resulting presentations, however, are jittery and strobe-like and are simply not as smooth as a presentation that has a higher frame rate.
To increase the rate at which the frames are displayed to a user, a frame generator 112 may be used to provide intermediate frames between two selected reference frames of the video presentation 110. Typically, frame generators fall within one of two categories: linear motion interpolation systems and motion compensated frame interpolation systems. Linear motion interpolation systems superimpose two reference frames of the video presentation 110 to create one or more intermediate frames. Motion compensated frame interpolation systems use motion vectors for frame interpolation.
FIG. 2 illustrates the data format of a frame 200 according to one motion compensated frame interpolation system. The frame 200 of FIG. 2 is divided into nine horizontal groups of blocks (GOB). Each GOB includes eleven macroblocks. Each macroblock has four luminance blocks of 8 pixels by 8 lines followed by two downsampled chrominance blocks (Cb and Cr).
In motion compensated interpolation systems, selected macroblocks are assigned a motion vector based upon a reference frame. FIG. 3 illustrates an exemplary reference frame 300. Usually, the reference frame is the last frame that was transmitted to the rendering computer 106. Each motion vector points to an equivalently sized region in the reference frame that is a good match for the macroblock that is to be transmitted. If a good representation cannot be found, the block is independently coded.
By sending motion vectors that point to regions in the reference frame already transmitted to the rendering computer 106, the media server 102 can transmit a representation of a frame using less data than if the pixel information for each pixel in each block is transmitted.
Although current frame generators increase the frame rate, they are simplistic in design. These systems do not account for certain idiosyncrasies within selected streaming presentations. For example, current frame generators that use motion compensated frame interpolation do not account for video presentations that have textual characters. Often a video image is overlaid with video text to convey additional information to the viewer. If motion compensated frame interpolation generates an intermediate frame having textual characters, the generated frame may inappropriately move the text to a new position, thereby creating some floating text that was not intended by the creator of the video presentation.
Another problem associated with existing frame generators is that they unintelligently perform frame generation regardless of whether such interpolation results in a better quality video presentation. Although frame interpolation does increase the number of frames presented to the viewer, such frame generation can produce strange results under certain circumstances. Some encoders, for example, choose a motion vector for a selected block based only upon the fact that the motion vector references a block that is a good match for the selected block even though there is no actual motion from one corresponding frame to the other. Thus, since all of the vectors do not represent motion, frame generation in these instances should not always be employed.
Additionally, current frame generators do not perform any type of post filtering to the generated frames. As can be readily appreciated, since motion compensated interpolation systems build an intermediate frame using blocks of pixels, i.e., macroblocks, the pixels at the border of each block may not be a close match to the pixels in the neighboring block. Accordingly, the borders of each of the blocks may be readily visible to a viewer of the media presentation.
There is a need for a frame generator that behaves intelligently about the frame generation process. If frame generation would produce anomalous results, frame generation should not be performed. A frame generator should also determine whether the reference frames include textual characters and account for them in the frame generation process. A frame generator should also filter interpolation artifacts from the intermediate frame.